package ArrayTest;
/*
选择排序算法
    1.每一次从这堆"参与比较的数据当中"找出最小值
    2.拿着这个最小值和"参与比较的这堆数最前面的元素"交换位置

    选择排序比冒泡排序好在：每一次的交换位置都是有意义的
 */
public class SelectionSortArrayTest {
    public static void main(String[] args){
        int[] arr = {2,3,1,5,3,7,4,9,11,6,24,21,32};
        int[] arr1 = MySelectionSort(arr);
        for(int i = 0; i < arr1.length; i++){
            System.out.println(arr1[i]);
        }
    }
    public static int[] MySelectionSort(int[] arr){
        //选择交换循环次数
        for(int i = 0; i < arr.length; i++){
            int min = i; // i为每次循环最左边数的下标
            //找出数组里面的最小值,假设arr[min]为数组最小值
            for(int j = i+1; j < arr.length; j++){
                if(arr[min] > arr[j]){
                    min = j; //数组中有比以min为下标的数更小的数时，交换二者下标
                }
            }
            if(min != i){  //min不等于i时，表示有比arr[min]更小的数，交换二者数值
                int temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
        return arr;
    }
}
